From 28df64a960c15812bfe8b8bcb51cf4bdcb832924 Mon Sep 17 00:00:00 2001 From: robertl Date: Mon, 1 Mar 2004 02:29:23 +0000 Subject: [PATCH] csv: decompose UTF to the Queen's Original ASCII. util: add case for ellipsis decoding. --- gpsbabel/csv_util.c | 6 ++++++ gpsbabel/util.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gpsbabel/csv_util.c b/gpsbabel/csv_util.c index c095d7e51..af1396d68 100644 --- a/gpsbabel/csv_util.c +++ b/gpsbabel/csv_util.c @@ -641,6 +641,12 @@ xcsv_waypt_pr(const waypoint *wpt) description = shortname; } + if (description) { + char *odesc = description; + description = str_utf8_to_ascii(odesc); + xfree(odesc); + } + i = 0; QUEUE_FOR_EACH(xcsv_file.ofield, elem, tmp) { fmp = (field_map_t *) elem; diff --git a/gpsbabel/util.c b/gpsbabel/util.c index bbdc53fbf..8ac7d26c8 100644 --- a/gpsbabel/util.c +++ b/gpsbabel/util.c @@ -708,9 +708,10 @@ char * str_utf8_to_ascii( const char * str ) if ( *cur & 0x80 ) { int bytes; int value; + char *strvalue = ""; utf8_to_int( cur, &bytes, &value ); - switch (value) { + case 0x2026: strvalue = "..."; break; case 0x201c: value = '\"'; break; case 0x201d: value = '\"'; break; case 0xb4: @@ -745,8 +746,13 @@ char * str_utf8_to_ascii( const char * str ) case 0xf8: value = '0'; break; default: value='?'; break;; } - *cur = (char)value; - strcpy( cur+1, cur+bytes ); + if (strvalue) { + memcpy(cur, strvalue, bytes); + cur += bytes - 1; + } else { + *cur = (char)value; + strcpy( cur+1, cur+bytes ); + } } cur++; } -- 2.30.2